[Swift 3] Swift 3に対応したPagingMenuControllerを使ってみる
PagingMenuControllerとは
PagingMenuControllerとはスワイプしたり、タブをタップすることで画面を切り替えることができるUIライブラリです。
リリースノートによると、バージョン1.3.0
からSwift 3.0に対応したとのことなので試してみました。
ちなみにMITライセンスで公開されています。
本記事執筆時点の最新バージョンは2.0.0
で使用するには以下の環境が必要です。
- iOS9+
- Swift 3.0+
- Xcode 8.0+
ライブラリの導入
CocoaPodsで簡単に導入できます。
※ Carthageにも対応しているようです。詳しくはこちらをご覧ください。
筆者はCocoaPodsバージョン1.0.1
で試しました。
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '9.0' use_frameworks! pod "PagingMenuController" post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['SWIFT_VERSION'] = '3.0' end end end
Podfileに上記内容を記述してpod install
したところ、以下のようなエラーになってしまいました。
[!] The dependency `PagingMenuController` is not used in any concrete target.
こちらによると、どうやらライブラリを導入するターゲートを明記しなければいけないとのことなので、以下の記述を追記して再度pod install
したところ、うまくいきました。
target "PagingMenuViewControllerSample" do pod "PagingMenuController" end
使ってみる
インストールできたのでxcworkspace
ファイルを開いて使ってみます。
サンプルを元に少しだけカスタマイズしてみました。
ページ数を3として表示してみます。
各ページに相当するViewControllerクラスのファイルを作成し、下記のようにビューの背景色を設定しました。
class ViewController1: UIViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) view.backgroundColor = UIColor.red } }
同様にViewController2
の背景色をgreen
、ViewController3
の背景色をblue
に設定しました。
次に、PagingMenuControllerCustomizable
に準拠したstructを作成します。
ハイライト部分がサンプルからの変更点です。
private struct PagingMenuOptions: PagingMenuControllerCustomizable { fileprivate var componentType: ComponentType { return .all(menuOptions: MenuOptions(), pagingControllers: pagingControllers) } fileprivate var pagingControllers: [UIViewController] { let vc1 = ViewController1() let vc2 = ViewController2() let vc3 = ViewController3() return [vc1, vc2, vc3] } fileprivate struct MenuOptions: MenuViewCustomizable { var displayMode: MenuDisplayMode { return .segmentedControl } var itemsOptions: [MenuItemViewCustomizable] { return [MenuItem1(), MenuItem2(), MenuItem3()] } var focusMode: MenuFocusMode { return .underline(height: 4.0, color: UIColor.black, horizontalPadding: 0.0, verticalPadding: 0.0) } } fileprivate struct MenuItem1: MenuItemViewCustomizable { var displayMode: MenuItemDisplayMode { return .text(title: MenuItemText(text: "First Menu")) } } fileprivate struct MenuItem2: MenuItemViewCustomizable { var displayMode: MenuItemDisplayMode { return .text(title: MenuItemText(text: "Second Menu")) } } fileprivate struct MenuItem3: MenuItemViewCustomizable { var displayMode: MenuItemDisplayMode { return .text(title: MenuItemText(text: "Third Menu")) } } }
最後に、各ページの親となるビューコントローラーを以下のように実装します。
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let options = PagingMenuOptions() let pagingMenuController = PagingMenuController(options: options) addChildViewController(pagingMenuController) view.addSubview(pagingMenuController.view) pagingMenuController.didMove(toParentViewController: self) } }
実行結果
以下のようにちゃんとページングでき、カスタマイズ部分も反映されていることが確認できました。
今回はSwift 3対応したPagingMenuControllerを使ってみました。
試してみてはいかがでしょうか。